#include <iostream>
#include <cstdlib>
using namespace std;

struct reinas{
int a[8][8];
int pieza;
reinas();
void limpiar();
void Tablero();
void insertar(int posx, int posy);
};

reinas::reinas(){
pieza=0;
for(int i=0;i<8;i++)
	for(int j=0;j<8;j++)
	a[i][j]=0;
}
void reinas::limpiar(){
for(int i=0;i<8;i++)
	for(int j=0;j<8;j++)
	a[i][j]=0;
}

void reinas::Tablero(){
for(int i=0;i<8;i++){
cout<<endl;
	for(int j=0;j<8;j++)
	cout<<a[i][j]<<" ";}
}
void reinas::insertar(int posx, int posy){
int x, y,i;
for(i=0;i<8;i++)
if(a[posx][i] == 1)pieza=1;
for(i=0;i<8;i++){
if(a[i][posy]== 1)pieza=1;
}
x=posx;
y=posy;
	while(x!= 0 && y!=0){
	x--;
	y--;
	}
for(i=0;i<8;i++){
	if((x+i)<8 & (y+i)<8){
	if(a[x+i][y+i]==1 )pieza=1;
	       }
}
x=posx;
y=posy;
	while(x!=0 ){
	x--;
	y++;
	}
for(i=0;i<8;i++){
if((x+i<8 )&&((y-i>=0) && (y-i<8))){
if(a[x+i][y-i]==1)pieza=1;
     }
}
a[posx][posy]=1;
}

int main(){

int tablero[8][8],posibilidad=0;
reinas *obj=new reinas();
	for(int i1=0;i1<8;i1++){
	for(int i2=0;i2<8;i2++){
	for(int i3=0;i3<8;i3++){
	for(int i4=0;i4<8;i4++){
if (posibilidad < 5){
obj->insertar(0,i1);
obj->insertar(1,i2);
obj->insertar(2,i3);
obj->insertar(3,i4);
if(obj->pieza){
obj->limpiar();
obj->pieza=0;  } else{
cout<<"Reinas en un tablero de ajedrez sin que puedan comerse unas con otras (Reinas=1)";
posibilidad++;
cout<<"Posibilidad "<<posibilidad<<endl;
obj->Tablero();
cout<<"\nCoordenadas reinas: " <<endl;
cout<<"(1,"<<i1+1<<")\n";
cout<<"(2,"<<i2+1<<")\n";
cout<<"(3,"<<i3+1<<")\n";
cout<<"(4,"<<i4+1<<")\n";
obj->limpiar();
system("pause");
}}}}}}
delete obj;
return 0;
}
